package com.jacobson.huobi.mvp.contract

import com.jacobson.core.mvp.IModel
import com.jacobson.core.mvp.IPresenter
import com.jacobson.core.mvp.IView
import com.jacobson.huobi.entities.InvitedNumberInfo
import com.jacobson.huobi.entities.response.CommonResponse
import com.jacobson.huobi.entities.response.InviteUserPageResponse
import io.reactivex.Observable

interface InviteDetailsContract {

    interface Presenter : IPresenter {
        fun loadInviteUserList(
            page: Int
        )

        fun getSharedInfo()
    }

    interface View : IView {
        fun onInviteUserResp(response: InviteUserPageResponse)

        fun onSharedInfoResp(response: CommonResponse<InvitedNumberInfo>)
    }

    interface Model : IModel {
        fun loadInviteUserList(
            page: Int
        ): Observable<InviteUserPageResponse>

        fun getSharedInfo(): Observable<CommonResponse<InvitedNumberInfo>>
    }
}